var app = angular.module("shop",["ballFilter","ngRoute"]);
app.directive("navBar",function(){
	return {
		templateUrl:"template/navBar.html"
	}
});

//路由操作 配置信息 $routeProvider 这个是固定的

app.config(function($routeProvider){
	$routeProvider.when("/products",{templateUrl:"template/products.html"});
	$routeProvider.when("/checkOut",{templateUrl:"template/checkOut.html"});
	$routeProvider.otherwise({templateUrl:"template/products.html"});
});




//添加控制器：控制index.html
app.controller("mainControll",function($scope,$http){
	//angular封装的网络请求方法  $http ,,, 服务 
	$http({
		method:"get",
		url:"php/getProduct.php"
	}).then(function(response){
		//成功接受数据的函数
		//使用$scope接收请求下来的数据  直接省了转换数据的这个过程了
		//我们需要的是data里面的东西
		$scope.products = response.data;
		$scope.findCategroyProducts('全部');
		//这个数组是为了存放，加入购物车的商品信息和数量
		$scope.cartsArray = [];
		//初始化，，，避免刚开始的时候购物车不出现任何东西
		$scope.numOfProduct = 0;
		$scope.totalPrice = 0;
	},function(error){
		//失败接收数据的函数
		console.log("错了" + error);
	});
	//实现点击事件
	$scope.findCategroyProducts = function(cate){
		//记录当前点击的分类
		$scope.currentCategory = cate;
		var categroy = [];
		if(cate == "全部"){
			categroy = $scope.products;
		}else{
			for(var i = 0;i < $scope.products.length;i++){
				if(cate == $scope.products[i].category){
					categroy.push($scope.products[i]);
				}
			}
		}
		$scope.categroy = categroy;
		//调用分页
		$scope.categroyPages(3);

		//调用第一页的数据
		$scope.contentsPerPage(1);
	}
	//返回分类的class名字
	$scope.classOfCategory = function(categroy){
		return $scope.currentCategory == categroy ? "btn-primary":"";
	}
	$scope.classOfPage = function(num){
		return $scope.isPage == num ? "btn-primary":"";
	}
	//分页
	//第一步：分为多少页
	$scope.categroyPages = function(num){
		var numOfCate = $scope.categroy.length / num;
		var pages = [];
		for (var i = 0; i < numOfCate; i++) {
			pages.push(i+1);
		};
		$scope.pagesArray = pages;
		// return Math.ceil($scope.categroy.length / num);
	}
	// 实现点击第几页 就显示当前分类下面的第几页
	$scope.contentsPerPage = function(page){
		//假设一开始就显示3个元素
		var productsPfPage = [];
		//从$scope.categroy拿东西，，因为这里面存放的是分类有几个东西
		for (var i = (page - 1)*3; i < Math.min(page * 3,$scope.categroy.length) ; i++) {
			productsPfPage.push($scope.categroy[i]);
		};
		$scope.productsPfPage = productsPfPage;
		$scope.isPage = page;
	}

	//加入购物车的功能
	$scope.addShopToCart = function(aProduct){
		//需要定义一个新的购物车数组 对象的形式保存
		//判断每次点击加入购物车按钮，数组里面有没有这个商品，如果存在，数量加1
		//如果不存在，把这个商品加入购物车，并且数量为1;
		var bol = false;
		for (var i = 0; i < $scope.cartsArray.length; i++) {
			if($scope.cartsArray[i].product.id == aProduct.id){
				$scope.cartsArray[i].num ++;
				bol = true;
				break;
			}

		};
		if(bol == false){
			$scope.cartsArray.push({num:1,product:aProduct});
		}
		//现在表示用户已经点击加入购物车，，，所以需要重新计算数量和价格
		$scope.totalSumAndMoney();

	}

	//计算价格，还有总数量
	$scope.totalSumAndMoney = function(){
		var num = 0;
		var totalPrice = 0;
		for(var i = 0;i < $scope.cartsArray.length;i++){
			num += $scope.cartsArray[i].num;
			totalPrice += $scope.cartsArray[i].product.price * $scope.cartsArray[i].num;
		}
		$scope.numOfProduct = num;
		$scope.totalPrice = totalPrice;

	}

	//点击删除，实现购物车删除的功能
	$scope.deleteProductsFromCarts = function(p){
		for (var i = 0; i < $scope.cartsArray.length; i++) {
			if($scope.cartsArray[i].product.id == p.product.id){
				$scope.cartsArray.splice(i,1);
			}
		};
		//重新计算数量和价格
		$scope.totalSumAndMoney();
	}
});
//ng-controller 在html里面添加之后必须要写下面的东西，里面可以没有东西，但是必须有
app.controller("productsCtr",function($scope,$http){});
app.controller("checkOutCtr",function($scope,$http){});